function sayHello(person: string) {
  return 'hello, ' + person;
}
let user = 'zpp';
// let user = [0, 1, 2];
console.log(sayHello(user));

// 原始数据类型
// 1.布尔值
let isDone: boolean = false;
// 2.数值
let decliteral: number = 6;
let hexLiteral: number = 0xf00d;
// 3字符串
let myname: string = 'zpp';
// 模板字符串
let sentence: string = `hello, my name is ${myname}`;

// 空值，js中没有void的概念，但是这里可以使用void表示没有任何返回值的函数
function alertName(): void {
  alert('my name is zpp');
}
// 如果声明一个void类型的变量其实没什么用，你只能将他赋值为undefined或者null
let unusable: void = undefined;
// Symbol 表示独一无二的值
// let s = Symbol();
// typeof s; //symbol



// 任意值类型
// 如果是普通值类型在赋值之后改变类型是不被允许的，
// 如果是任意类型则允许赋值为任意类型
let myNumber: any = 'sever';
myNumber = 9;

// 任意值的属性和方法
// 在任意值上访问任何属性都是允许的：也允许调用任何方法：
let anyThing: any = 'hello';

// 变量如果在声明的时候，未指定其类型，那么它会被识别为任意值类型：

// 联合类型：(Union Types):表示取值为多种类型中的一种；
let myvalue: string | number;
myvalue = 'q';
myvalue = 90;
// 访问联合类型的属性或方法:只能访问此联合类型的所有类型里共有的属性或方法
